package com.freewater.javabase.demo.network.udp;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.nio.charset.StandardCharsets;

public class Client {
    public static void main(String[] args) throws IOException {
        DatagramSocket ds = new DatagramSocket();
        ds.setSoTimeout(1000);
        ds.connect(InetAddress.getByName("localhost"), 6666);

        // 通常来说，客户端必须先发UDP包，因为客户端不发UDP包，服务器端就根本不知道客户端的地址和端口号。
        // 发送
        byte[] data = "hello".getBytes(StandardCharsets.UTF_8);
        DatagramPacket dp = new DatagramPacket(data, data.length);
        ds.send(dp);

        // 接收
        byte[] buffer = new byte[1024];
        dp = new DatagramPacket(buffer, buffer.length);
        ds.receive(dp);

        String s = new String(dp.getData(), dp.getOffset(), dp.getLength(), StandardCharsets.UTF_8);
        System.out.println("[server]" + s);
        ds.disconnect();
    }
}
